home *** CD-ROM | disk | FTP | other *** search
- GrepBrowser Documentation
-
- 9/15/93, Wednesday
-
- Windows Tech Journal
- OOP Alley, October 1993
- Greg Voss
-
- Article Title: What I Learned in Auto Shop
- Subject: Direct Manipulation Tools for Windows
- Browsers for Source Code Management
-
- Example Programs: GrepBrowser
- grep.exe
- sed.exe
-
- Tools used to GrepBrowser
- build exe's: Smalltalk/V Windows 2.0, Windows 3.1
- Borland Resource Workshop
- Borland C++ 3.1
- grep and sed
- Borland C++ 3.1
- ============================================================
-
- This month's posting is an executable program in binary
- form. The intent is to show a browser that can be
- used as a programming tool as well as to show what
- a Smalltalk program looks like when distributed
- without source. I have used this browser for a little
- over a year to develop and manage source code for large
- C, C++, and Lisp projects.
-
- This program is essentially the same as the program
- produced by filing in (compiling) the source posted
- last month. I've also posted binary versions of
- grep and sed that make it easy to massage output
- from various compilers into a format that can be
- fed into GrepBrowser. If you already have versions
- of grep and sed, you'll probably want to use your
- own as these support only bare bones flag options.
- If you use Borland grep, you'll still need sed to
- massage the output as Borland output is not standard
- Unix (i.e. not designed to be the middle component of
- a pipe sequence).
-
-
- Installation
- ============
-
- If you have a standard bin or tool directory, copy
- all the exe and dll files to that directory. If
- not make a new directory and copy the files there.
- This directory must be in your path specifcation
- so edit autoexec.bat if you make a new directory.
-
-
- Using GrepBrowser
- =================
-
- GrepBrowser must be invoked with one argument
-
- gb file
-
- The file is called a 'grep list' file and is
- a text file in which each line specifies where
- to find text patterns matched by grep. The
- grep list format is shown below. The most
- convenient way to use GrepBrowser is with
- Windows' Program Manager. For example, assume
- that gb.exe is installed and you have created
- a grep list file called tag.grp in the directory
- c:\work\compiler. Create a new program object
- in the Program Manager and fill in the fields
- as follows.
-
- Description: GrepBrowser on tag.grp
- Command Line gb.exe tag.grp
- Working Directory c:\work\compiler
- Shortcut Key (not required)
-
- You can fill in a short cut key if you want.
- When you press OK in the Program Item Properties
- dialog, the specifications are recorded and
- a little nerd icon should appear in the window.
- Now double click on the nerd to invoke GrepBrowser.
-
- Note that you do not have to specify a working
- directory if you give a fully qualified pathname
- for the grep list file:
-
- gb.exe c:\work\compiler\tag.grp
-
- Technically, the file argument is not required.
- However, once a GrepBrowser window is open,
- there is no convenient way to change the file
- used for the grep list. You can edit the file
- while in the Browser and update the grep list
- from a modified version of the same file. However
- you can not select a new grep list file except
- from the command line. This restriction is
- easy to modify (see September source code)
- but I decided to take time to develop a
- more sophisticated command line syntax before
- adding menu commands. There is also some
- potential confusion in the menu interface.
- Now, the open command will open a regular text
- file for editing, so 'Open' is not available
- to indcate desire to change the grep list file.
-
- In practice, the current command line syntax
- is convenient. I tend to have a single
- grep list file devoted to a given project.
- I put tags in the file as markers for grep to
- search for. The only exeption is when I want to
- quickly look for a variety of patterns in a set
- of files. In such a case I use file names for
- grep output like 00.grp and 01.grp and put
- matching program items in the Program Manager.
-
- You can always run GrepBrowser from the
- 'File / Run' command in Program Manager. You
- can also create an association for 'grp' files
- in the File Manager which ties files ending
- in '*.grp' to gb.exe. Then a double click on
- a grp file in the File Manager will automatically
- invoke a GrepBrowser on the selected file.
- (Another example of a Browser using direct
- manipulation).
-
-
-
- GrepList Format
- ===============
-
- Each line of the grep list file specifies a
- file name, a line number, and text, just like
- standard output from grep when the -n flag is used
- and more than one file is searched. It's convenient
- to think of each line as a record with three fields or
- to think of each line as a specification for
- a GrepObject--an actual class in the source.
-
- The following output from grep is typical:
-
- input.lsp:18: (defclass c-input-class ()
- parse.lsp:10: (defclass c-parser-class ()
- scan.lsp:72: (defclass c-scanner-class ()
- symbol.lsp:11: (defclass lex-symbol ()
- symbol.lsp:27: (defclass symbol-table ()
- test.lsp:1: (defclass c-input-class ()
-
- In this case the goal was to search for all
- class definitions in a set of Lisp files used
- to build a C compiler. The actual grep command
- line was
-
- grep -n defclass *.lsp >class.grp
-
- Now a GrepBrowser can be opened
-
- GrepBrowser \work\compiler\class.grp
-
- Or you could set up a Program Item in the
- Windows Program Manager as follows:
-
- Description: GrepBrowser on Parser Classes
- Command Line gb.exe class.grp
- Working Directory c:\work\compiler
- Shortcut Key (not required)
-
-
- Searching a Single File
- =======================
-
- Note that if grep is used on only one file,
- the output will not include the file name.
- For example
-
- grep -n grep notes.txt
-
- produces
-
- 21: GrepBrowser [grepFile] [searchFile]
- 27:(e.g. grepFile: class.grp searchFile: app.h)
- 52:grepFile from which the browser should reinitialize
- 57:a new grepFile and reinitializing the grepList from
- 131:during the parse of the grepList. The answer
- 143:original specification so that modified grepLists
-
-
- Currently GrepBrowser can't handle lines which do not
- include file names. The mechanisms are in place to
- do this and a future release will support this feature.
- In the mean time, just give a dummy (non-existent file)
- argument to grep:
-
- grep -n grep notes.txt xxxx >out.grp
-
- produces
-
- notes.txt:21: GrepBrowser [grepFile] [searchFile]
- notes.txt:27:(e.g. grepFile: class.grp searchFile: app.h)
- notes.txt:52:grepFile from which the browser should reinitialize
- notes.txt:57:a new grepFile and reinitializing the grepList from
- notes.txt:131:during the parse of the grepList. The answer
- notes.txt:143:original specification so that modified grepLists
-
- The error message 'GREP.EXE: couldn't open xxxx'
- is sent to stderr (standard error device), not
- to standard output, so it will not interfere
- when output is redirected to out.grp.
-
-
- Converting Borland C++ Output
- =============================
-
- You can use grep and sed in combination
- to convert error and warning messages
- printed by Borlandc C++ into a format that
- can be used by GrepBrowser. The basic
- idea is to direct output to a file
- (e.g. bcc.err) and then invoke a batch
- file which reads this file and filters
- it. The file bcc2grep.sed contains
- two regular expression editing commands:
- one for error messages and one for
- warnings. An example C++ program
- (ex1.cpp) will genrate the errors found
- in bcc.err. Both this file and the
- converted file created by bcc2grep.bat
- are provided with the distribution files
- for study. The following files are all
- related to conversion of BC++ output into
- a grep list file suitable for GrepBrowser.
-
- bcc2grep.bat
- ex1.cpp
- bcc.err
- bcc.grp
- bcc2grep.sed
-
-
- OOP, OOP, and away.
-